#ifndef RXE_TASK_H
#define RXE_TASK_H

/*调度状态*/
enum {
    TASK_STATE_START = 0,
    TASK_STATE_BUSY,
    TASK_STATE_ARMED,
};
/*调度描述结构体定义*/
struct rxe_task {
    void *obj;
    struct tasklet_struct tasklet;
    int state;
    spinlock_t state_lock;
    void *arg;
    int (*func)(void *arg);
    int ret;
    /*调度名称*/
    char name[16];
    bool destroyed;
};

int __rxe_do_task(struct rxe_task *task);
void rxe_do_task(struct tasklet_struct *t);
int rxe_init_task(void *obj, struct rxe_task *task,
        void *arg, int (*func)(void *), char *name);
void rxe_cleanup_task(struct rxe_task *task);
void rxe_run_task(struct rxe_task *task, int sched);
void rxe_disable_task(struct rxe_task *task);
void rxe_enable_task(struct rxe_task *task);

#endif
